package aufgabe_03;

public class Stack {
	private int[] refIntarr;
	private int top = 0;

	// Dem Konstruktor soll die Groesse des Stacks
	// als Parameter uebergeben werden
	public Stack(int groesse) {
		refIntarr = new int[groesse];
	}
	// Die Methode print() gibt den Inhalt des Stacks
	// auf dem Bildschirm aus
	synchronized public void print() {
		for (int i = 0; i < this.top; i++) {
			System.out.println("Element " + i + ": " + refIntarr[i]);
		}
	}
	// Element mit push() auf Stack ablegen und
	// OverflowException werfen, wenn Stack bereits voll
	synchronized public void push(int inhalt) throws OverflowException {
		if (top == refIntarr.length) {
			throw new OverflowException();
		} else {
			refIntarr[top] = inhalt;
			top++;
		}
	}
	// Element mit pop() von Stack holen und
	// UnderflowException werfen, wenn Stack bereits leer
	synchronized public int pop() throws UnderflowException {
		if( top == 0 ) {
			throw new UnderflowException();
		}
		else{			
			return refIntarr[--top];			
		}
	}
}